//package cn.whaley.sailfish.repository.base;
//
//import cn.whaley.sailfish.domain.base.*;
//import moretv.commons.hibernate.PageBean;
//import moretv.commons.spring.hibernate3.DaoSupport;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.hibernate.Query;
//
//import java.math.BigInteger;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//public class BaseRepository extends DaoSupport {
//	Log logger = LogFactory.getLog(BaseRepository.class);
//	public void saveOrUpdate(BaseDomain domain) {
//		try {
//			this.getHibernateTemplate().saveOrUpdate(domain);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}
//
//	public void save(BaseDomain cms) {
//		this.getHibernateTemplate().save(cms);
//	}
//
//	public void deleteCMSEntity(BaseDomain cms, int operatorId) {
//		cms.setStatus(BaseDomain.STATUS_DELETED);
//		cms.setUpdateTime(new Date());
//		cms.setOperatorId(operatorId);
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void invalidCMSEntity(BaseDomain cms, int operatorId) {
//		cms.setStatus(BaseDomain.STATUS_UNABLE);
//		cms.setUpdateTime(new Date());
//		cms.setOperatorId(operatorId);
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void validCMSEntity(BaseDomain cms, int operatorId) {
//		cms.setStatus(BaseDomain.STATUS_NORMAL);
//		cms.setUpdateTime(new Date());
//		cms.setOperatorId(operatorId);
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void addCMSEntity(BaseDomain cms, Date validTime, Date invalidTime,
//			int operatorId) {
//		cms.setCreateTime(new Date());
//		cms.setUpdateTime(new Date());
//		cms.setValidTime(validTime);
//		cms.setInvalidTime(invalidTime);
//		cms.setOperatorId(operatorId);
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void addCMSEntity(BaseDomain cms) {
//		cms.setCreateTime(new Date());
//		cms.setUpdateTime(new Date());
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void updateCMSEntity(BaseDomain cms, int operatorId) {
//		cms.setUpdateTime(new Date());
//		cms.setOperatorId(operatorId);
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void updateCMSEntity(BaseDomain cms) {
//		cms.setUpdateTime(new Date());
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public void publishCMSEntity(BaseDomain cms, int operatorId) {
//		cms.setOperatorId(operatorId);
//		this.getHibernateTemplate().saveOrUpdate(cms);
//	}
//
//	public Object findById(Class classType, int id, int status) {
//		String hql = "from " + classType.getSimpleName()
//				+ " where id = ? and status = ?";
//		return this.getHibernateHelper().getSingle(hql,
//				new Object[] { id, status });
//	}
//
//	public Object findById(Class classType, int id) {
//		String hql = "from " + classType.getSimpleName() + " where id = ?";
//		return this.getHibernateHelper().getSingle(hql, new Object[] { id });
//	}
//
//	public Object findByIdNotDeleted(Class classType, int id) {
//		String hql = "from " + classType.getSimpleName()
//				+ " where id = ? and status != ?";
//		return this.getHibernateHelper().getSingle(hql,
//				new Object[] { id, BaseDomain.STATUS_DELETED });
//	}
//
//	public List findByPageBean(String hql, Object[] para, PageBean pageBean) {
//		return this.getHibernateHelper().findWithPage(hql, para, pageBean);
//	}
//
//	public List findCMSEntity(Class classType) {
//		String hql = "from " + classType.getSimpleName();
//		return this.getHibernateTemplate().find(hql);
//	}
//
//	public List findCMSEntity(Class classType, int status) {
//		String hql = "from " + classType.getSimpleName() + " where status = ?";
//		return this.getHibernateTemplate().find(hql, new Object[] { status });
//	}
//
//	public List findCMSEntityNotDeleted(Class classType) {
//		String hql = " from " + classType.getSimpleName()
//				+ " where status != ?";
//		return this.getHibernateTemplate().find(hql,
//				new Object[] { BaseDomain.STATUS_DELETED });
//	}
//
//	public List findInIds(Class classType, List<Integer> ids) {
//		String idlist = "";
//		for (int id : ids) {
//			idlist += id + ",";
//		}
//		idlist = idlist.substring(0, idlist.length() - 1);
//		String hql = "from " + classType.getSimpleName() + " where id in("
//				+ idlist + ")";
//		return this.getHibernateTemplate().find(hql);
//	}
//
//	public List findInIdsNotDeleted(Class classType, List<Integer> ids) {
//		String idlist = "";
//		for (int id : ids) {
//			idlist += id + ",";
//		}
//		idlist = idlist.substring(0, idlist.length() - 1);
//		String hql = "from " + classType.getSimpleName() + " where id in("
//				+ idlist + ") and status != ?";
//		return this.getHibernateTemplate().find(hql,
//				new Object[] { BaseDomain.STATUS_DELETED });
//	}
//
//	public List findInIds(Class classType, List<Integer> ids, int status) {
//		String idlist = "";
//		for (int id : ids) {
//			idlist += id + ",";
//		}
//		idlist = idlist.substring(0, idlist.length() - 1);
//		String hql = "from " + classType.getSimpleName() + " where id in("
//				+ idlist + ") and status = ?";
//		return this.getHibernateTemplate().find(hql, new Object[] { status });
//	}
//
//	public Object findByCode(Class classType, String code, int status) {
//		String hql = "from " + classType.getSimpleName()
//				+ " where code = ? and status = ?";
//		return this.getHibernateHelper().getSingle(hql,
//				new Object[] { code, status });
//	}
//
//	public Object findByCode(Class classType, String code) {
//		String hql = "from " + classType.getSimpleName() + " where code=?";
//		return this.getHibernateHelper().getSingle(hql, new Object[] { code });
//	}
//
//	public Object findByCodeNotDeleted(Class classType, String code) {
//		String hql = "from " + classType.getSimpleName()
//				+ " where code=? and status != ?";
//		return this.getHibernateHelper().getSingle(hql,
//				new Object[] { code, BaseDomain.STATUS_DELETED });
//	}
//
//	public Object findByLongId(Class classType, long id, int status) {
//		String hql = "from " + classType.getSimpleName()
//				+ " where id=? and status =?";
//		return this.getHibernateHelper().getSingle(hql,
//				new Object[] { id, status });
//	}
//
//	public Object findByLongId(Class classType, long id) {
//		String hql = "from " + classType.getSimpleName() + " where id=?";
//		return this.getHibernateHelper().getSingle(hql, new Object[] { id });
//	}
//
//	public Object findByLongIdNotDeleted(Class classType, long id) {
//		String hql = "from " + classType.getSimpleName()
//				+ " where id=? and status != ?";
//		return this.getHibernateHelper().getSingle(hql,
//				new Object[] { id, BaseDomain.STATUS_DELETED });
//	}
//	
//	public List queryWithPage(String sql,PageBean pageBean,Class object){
//    	String sqlString = sql;
//    	sqlString = "select count(0) " + sqlString.substring(sqlString.indexOf("from"));
//    	if(sqlString.indexOf("order") > 0){
//    		sqlString = sqlString.substring(0, sqlString.indexOf("order by"));
//    	}
//    	Query countQuery = this.getSession().createSQLQuery(sqlString);
//    	pageBean.setRecordCount(((BigInteger)countQuery.list().get(0)).intValue());
//    	if(pageBean.getPageCount() == 0){
//    		return new ArrayList();
//    	}else{
//    		sql = sql + " limit "  + (pageBean.getCurrentPage()) * pageBean.getPageSize() + "," + pageBean.getPageSize();
//    		Query listQuery = this.getSession().createSQLQuery(sql).addEntity(object);
//    		return listQuery.list();
//    	}
//    }
//	
//	protected List queryWithSize(String sql,int beginNum , int endNum,Class object){
//		sql = sql + " limit "  + beginNum + "," + endNum;
//		System.out.println(sql);
//		Query listQuery = this.getSession().createSQLQuery(sql).addEntity(object);
//		return listQuery.list();
//    }
//}
